18415
20860
Mam zestaw danych podany poniżej
nazwa kol1 kol2
a 10,3 10,9
b 11 15
c 20 7.2
d 6,2 6.2
e 5,3 5.4
f 4,5 4,0
chcę porównać col1 i col2 mojego df i chcę utworzyć inną kolumnę, w której porównując wartości col1 i col2, jeśli wartość col2 rośnie z col1, chcę wpisać rosnący obok nich w mojej kolumnie tam i jeśli są malejące, a następnie chcę pisać malejące i bez zmian, jeśli są takie same
i chcę, aby moja produkcja była taka
nazwa kol1 kol2 kol3
a 10,3 10,9 rosnąco
b 11 15 rosnąco
c 20 7,2 malejąco
d 6,2 6,2 bez zmian
e 5,3 5,4 zwiększanie
f 4,5 4,0 malejąco 
Z dplyrem:
df%>%
mutate (Col3 = ifelse (col2 == col1,
"bez zmiany",
ifelse (col2> col1,
„rosnący”, „malejący”)))
Lub używając case_when zgodnie z sugestią @akrun:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "bez zmian",
col2> col1 ~ "Rosnąco",
TRUE ~ „malejąco”))
Wynik:
nazwa kol1 kol2 kol3
1 a 10,3 10,9 rosnąco
2 b 11,0 15,0 rosnąco
3 c 20,0 7,2 malejąco
4 d 6,2 6,2 bez zmian
5 e 5,3 5,4 rosnąco
6 f 4,5 4,0 malejąco
Dane:
df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6,2, 5,3, 4,5), col2 = c (10,9, 15, 7,2, 6,2, 5,4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Możemy odjąć col1 od col2, a następnie użyć znaku do przypisania wartości
df $ col3 <- c ("malejąco", "bez zmian", "zwiększanie") [znak (df $ col1 - df $ col2) + 2]
df
# nazwa kol1 kol2 kol3
# 1 a 10,3 10,9 malejąco
# 2 b 11,0 15,0 malejąco
# 3 c 20,0 7,2 rosnąco
# 4 d 6,2 6,2 bez zmian
# 5 e 5,3 5,4 malejąco
# 6 f 4,5 4,0 rosnąco
Lub używając dplyr, możemy użyć case_when
biblioteka (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "bez zmian",
col1> col2 ~ "rosnąco",
TRUE ~ „malejąco”))
|
Podstawa R
df $ kol3 <-with (df, ifelse (kol1> kol2, "malejąco",
ifelse (kol1